View Javadoc
1   package edu.jiangxin.apktoolbox.help.settings;
2   
3   import edu.jiangxin.apktoolbox.swing.extend.EasyChildTabbedPanel;
4   import edu.jiangxin.apktoolbox.utils.Constants;
5   import org.apache.commons.lang3.StringUtils;
6   import org.apache.commons.lang3.Strings;
7   
8   import javax.swing.*;
9   import java.awt.*;
10  import java.awt.event.ActionEvent;
11  import java.awt.event.ActionListener;
12  import java.io.Serial;
13  import java.util.Locale;
14  
15  public class LocalePanel extends EasyChildTabbedPanel {
16      @Serial
17      private static final long serialVersionUID = 1L;
18  
19      private JPanel optionPanel;
20  
21      private JComboBox<String> typeComboBox;
22  
23      private JPanel operationPanel;
24  
25      private static final String[] SUPPORTED_LANGUAGES = {Locale.CHINESE.getLanguage(), Locale.ENGLISH.getLanguage()};
26  
27      @Override
28      public void createUI() {
29          BoxLayout boxLayout = new BoxLayout(this, BoxLayout.Y_AXIS);
30          setLayout(boxLayout);
31  
32          createOptionPanel();
33          add(optionPanel);
34  
35          add(Box.createVerticalStrut(Constants.DEFAULT_Y_BORDER));
36  
37          createOperationPanel();
38          add(operationPanel);
39  
40          add(Box.createVerticalStrut(15 * Constants.DEFAULT_Y_BORDER));
41      }
42  
43      private void createOptionPanel() {
44          optionPanel = new JPanel();
45          optionPanel.setLayout(new BoxLayout(optionPanel, BoxLayout.X_AXIS));
46  
47          JLabel typeLabel = new JLabel("Locale:");
48          typeComboBox = new JComboBox<>();
49          typeComboBox.setMaximumSize(new Dimension(Constants.DEFAULT_COMBOBOX_WIDTH, Constants.DEFAULT_COMBOBOX_HEIGHT));
50  
51          String currentLocaleLanguage = conf.getString("locale.language");
52          if (StringUtils.isEmpty(currentLocaleLanguage)) {
53              currentLocaleLanguage = Locale.ENGLISH.getLanguage();
54              conf.setProperty("locale.language", currentLocaleLanguage);
55          }
56  
57          for (String language : SUPPORTED_LANGUAGES) {
58              typeComboBox.addItem(language);
59              if (Strings.CS.equals(currentLocaleLanguage, language)) {
60                  typeComboBox.setSelectedItem(language);
61              }
62          }
63  
64          optionPanel.add(typeLabel);
65          optionPanel.add(Box.createHorizontalStrut(Constants.DEFAULT_X_BORDER));
66          optionPanel.add(typeComboBox);
67      }
68  
69      private void createOperationPanel() {
70          operationPanel = new JPanel();
71          operationPanel.setLayout(new BoxLayout(operationPanel, BoxLayout.X_AXIS));
72  
73          JButton applyButton = new JButton("Apply");
74          applyButton.addActionListener(new ApplyButtonActionListener());
75  
76          operationPanel.add(applyButton);
77      }
78  
79      private final class ApplyButtonActionListener implements ActionListener {
80          @Override
81          public void actionPerformed(ActionEvent e) {
82              String language = (String)typeComboBox.getSelectedItem();
83              if (StringUtils.isNotEmpty(language)) {
84                  conf.setProperty("locale.language", language);
85                  JOptionPane.showMessageDialog(LocalePanel.this, "Setting locale successfully, restart the program please");
86              }
87          }
88      }
89  }